Online entities offer a wide variety of services to a variety of different client devices, including personal computers (PCs), portable digital assistants (PDAs), mobile telephones, pocket PCs, smartphones, set-top boxes, digital video recorders (DVRs), and gaming consoles, among other possibilities. These client devices often access various web services, such as online stores or other providers of audio/visual content, software programs, digital books, or other electronic content. In many cases, users of a client device may use a domain name to identify a web service.
However, generally speaking, client devices cannot translate domain names directly into network addresses, such as internet protocol (“IP”) addresses. Rather, client devices typically send the domain name of a web service to a domain name system (“DNS”) server, and the DNS server replies to the client device with one or more IP addresses for accessing the web service. The client device may then use one of the IP addresses that it received from the DNS server to access one or more servers associated with the web service.
In some cases, the web service may select one of the servers to provide the web service to the client device, and the selected server may also maintain state information for the client device and the current browsing or connection session. For example, a user of the client device may add items to an online shopping cart, and the selected server may store state data identifying the items that the user has added to the shopping cart. However, because the client device may access the web service at a domain name that is used by all of the servers associated with the web service, the web service may need logic to route communications to the specific IP address for the server that will provide the selected web service to the client device. Moreover, because the selected server may fail, the web service may also need to replicate the state data on the other servers associated with the domain name. In some cases, the client device is also required to store state data, such as a cookie, that identifies the client device's current state to the web service. Therefore, systems and methods are needed to overcome these limitations of traditional methods for selecting servers for providing a web service to a client device.